<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style>
.section_anchor {
    font-size:0px;
}
</style>




 <title>RFCsCompliance</title>
 </head><body>




 <div id="wikicontent">
 <table border="0" cellpadding="0" cellspacing="0" width="100%">
 <tbody><tr>

 <td class="vt" id="wikimaincol" width="100%">

 <div id="wikiheader" style="margin-bottom: 1em;">

 &nbsp;
 <span style="font-size: 120%; font-weight: bold;">RFCsCompliance</span>
 &nbsp;


 <div style="font-style: italic; margin-top: 3px;">A paper showing pyftpdlib compliance against FTP protocol standard RFCs.</div>

 </div>
 <h1><a name="Table_of_contents"></a>Table of contents<a href="#Table_of_contents" class="section_anchor">¶</a></h1><p></p><ul><li><a href="#Table_of_contents">Table of contents</a></li><li><a href="#Introduction">Introduction</a></li><li><a href="#RFC-959_-_File_Transfer_Protocol">RFC-959 - File Transfer Protocol</a></li><li><a href="#RFC-1123_-_Requirements_for_Internet_Hosts">RFC-1123 - Requirements for Internet Hosts</a></li><li><a href="#RFC-2228_-_FTP_Security_Extensions">RFC-2228 - FTP Security Extensions</a></li><li><a href="#RFC-2389_-_Feature_negotiation_mechanism_for_the_File_Transfer_P">RFC-2389 - Feature negotiation mechanism for the File Transfer Protocol</a></li><li><a href="#RFC-2428_-_FTP_Extensions_for_IPv6_and_NATs">RFC-2428 - FTP Extensions for IPv6 and NATs</a></li><li><a href="#RFC-2577_-_FTP_Security_Considerations">RFC-2577 - FTP Security Considerations</a></li><li><a href="#RFC-2640_-_Internationalization_of_the_File_Transfer_Protocol">RFC-2640 - Internationalization of the File Transfer Protocol</a></li><li><a href="#RFC-3659_-_Extensions_to_FTP">RFC-3659 - Extensions to FTP</a></li><li><a href="#RFC-4217_-_Securing_FTP_with_TLS">RFC-4217 - Securing FTP with TLS</a></li></ul> <p></p><h1><a name="Introduction"></a>Introduction<a href="#Introduction" class="section_anchor">¶</a></h1><p>This page lists current standard Internet RFCs that define the FTP protocol. </p><p>pyftpdlib conforms to the FTP protocol standard as defined in <a href="http://www.ietf.org/rfc/rfc959.txt" rel="nofollow">RFC-959</a> and <a href="http://www.ietf.org/rfc/rfc1123.txt" rel="nofollow">RFC-1123</a>
 implementing all the fundamental commands and features described in
them. It also implements some more recent features such as OPTS and FEAT
 commands (<a href="http://www.ietf.org/rfc/rfc2389.txt" rel="nofollow">RFC-2398</a>), EPRT and EPSV commands covering the IPv6 support (<a href="ftp://ftp.rfc-editor.org/in-notes/rfc2428.txt" rel="nofollow">RFC-2428</a>) and MDTM, MLSD, MLST and SIZE commands defined in <a href="http://www.ietf.org/rfc/rfc3659.txt" rel="nofollow">RFC-3659</a>. </p><p>Future plans for pyftpdlib include the gradual implementation of other standards track RFCs. </p><p>Some
 of the features like ACCT or SMNT commands will never be implemented
deliberately. Other features described in more recent RFCs like the
TLS/SSL support for securing FTP (<a href="http://www.ietf.org/rfc/rfc4217.txt" rel="nofollow">RFC-4217</a>) are now implemented as a <a href="http://code.google.com/p/pyftpdlib/source/browse/trunk/demo/tls_ftpd.py" rel="nofollow">demo script</a>, waiting to reach the proper level of stability to be then included in the standard code base. </p><h1><a name="RFC-959_-_File_Transfer_Protocol"></a>RFC-959 - File Transfer Protocol<a href="#RFC-959_-_File_Transfer_Protocol" class="section_anchor">¶</a></h1><p>The base specification of the current File Transfer Protocol. </p><ul><li>Issued: October 1985 </li><li>Status: STANDARD </li><li>Obsoletes: <a href="http://www.ietf.org/rfc/rfc765.txt" rel="nofollow">RFC-765</a> </li><li>Updated by: <a href="http://www.ietf.org/rfc/rfc1123.txt" rel="nofollow">RFC-1123</a>, <a href="http://www.ietf.org/rfc/rfc2228.txt" rel="nofollow">RFC-2228</a>, <a href="http://www.ietf.org/rfc/rfc2640.txt" rel="nofollow">RFC-2640</a>, <a href="http://www.ietf.org/rfc/rfc2773.txt" rel="nofollow">RFC-2773</a> </li><li><a href="http://www.ietf.org/rfc/rfc959.txt" rel="nofollow">Link</a> </li></ul><p></p><p><table><tbody><tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Command</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Implemented</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Milestone</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Description</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Notes</strong> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> ABOR </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Abort data transfer. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> ACCT </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Specify account information. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> It will never be implemented (useless). </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> ALLO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Ask for server to allocate enough storage space. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Treated as a NOOP (no operation). </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> APPE </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Append data to an existing file. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> CDUP </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Go to parent directory. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> CWD </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Change current working directory. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> DELE </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Delete file. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> HELP </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Show help. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Accept also arguments. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> LIST </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> List files. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Accept also bad arguments like "-ls", "-la", ... </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> MKD </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Create directory. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> MODE </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Set data transfer mode. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> "STREAM" mode is supported, "Block" and "Compressed" aren't. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NLST </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> List files in a compact form. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NOOP </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NOOP (no operation), just do nothing. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> PASS </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Set user password. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> PASV </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Set server in passive connection mode. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> PORT </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Set server in active connection mode. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> PWD </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Get current working directory. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> QUIT </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Quit session. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> If file transfer is in progress, the connection will remain open until it is finished. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> REIN </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Reinitialize user's current session. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> REST </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Restart file position. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> RETR </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Retrieve a file (client's download). </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> RMD </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Remove directory. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> RNFR </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> File renaming (source) </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> RNTO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> File renaming (destination) </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> SITE </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.5.1 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Site specific server services. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;">
 No SITE commands aside from "SITE HELP" are implemented by default.
The user willing to add support for a specific SITE command has to
define a new <tt>ftp_SITE_%CMD%</tt> method in the <tt>FTPHandler</tt> subclass. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> SMNT </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Mount file-system structure. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Will never be implemented (too much system-dependent and almost never used). </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> STAT </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Server's status information / File LIST </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> STOR </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Store a file (client's upload). </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> STOU </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Store a file with a unique name. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> STRU </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Set file structure. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Supports only File type structure by doing a NOOP (no operation). Other structure types (Record and Page) are not implemented. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> SYST </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Get system type. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Always return "UNIX Type: L8" because of the LIST output provided. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> TYPE </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Set current type (Binary/ASCII). </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Accept only Binary and ASII TYPEs. Other TYPEs such as EBCDIC are obsoleted, system-dependent and thus not implemented. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> USER </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Set user. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;">
 A new USER command could be entered at any point in order to change the
 access control flushing any user, password, and account information
already supplied and beginning the login sequence again. </td></tr> </tbody></table></p><p><br> </p><h1><a name="RFC-1123_-_Requirements_for_Internet_Hosts"></a>RFC-1123 - Requirements for Internet Hosts<a href="#RFC-1123_-_Requirements_for_Internet_Hosts" class="section_anchor">¶</a></h1><p>Extends and clarifies some aspects of <a href="http://www.ietf.org/rfc/rfc959.txt" rel="nofollow">RFC-959</a>. Introduces new response codes 554 and 555. </p><ul><li>Issued: October 1989 </li><li>Status: STANDARD </li><li><a href="http://www.ietf.org/rfc/rfc1123.txt" rel="nofollow">Link</a> </li></ul><p><table><tbody><tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Feature</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Implemented</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Milestone</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Description</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Notes</strong> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> TYPE L 8 as synonym of TYPE I </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.2.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> TYPE L 8 command should be treated as synonym of TYPE I ("IMAGE" or binary type). </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> PASV is per-transfer </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> PASV must be used for a unique transfer. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> If PASV is issued twice data-channel is restarted. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Implied type for LIST and NLST </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> The data returned by a LIST or NLST command SHOULD use an implied TYPE AN. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> STOU format output </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.2.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Defined the exact format output which STOU response must respect ("125/150 FILE filename"). </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Avoid 250 response type on STOU </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.2.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> The 250 positive response indicated in <a href="http://www.ietf.org/rfc/rfc959.txt" rel="nofollow">RFC-959</a> has been declared incorrect in <a href="http://www.ietf.org/rfc/rfc1123.txt" rel="nofollow">RFC-1123</a> which requires 125/150 instead. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Handle "Experimental" directory cmds </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;">
 The server should support XCUP, XCWD, XMKD, XPWD and XRMD obsoleted
commands and treat them as synonyms for CDUP, CWD, MKD, LIST and RMD
commands. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Idle timeout </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.5.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;">
 A Server-FTP process SHOULD have a configurable  idle timeout of 5
minutes, which will terminate the process and close the control
connection if the server is inactive (i.e., no command or data transfer
in progress) for a long period of time. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;">  </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Concurrency of data and control </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Server-FTP should be able to process STAT or ABOR while a data transfer is in progress </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Feature granted natively for ALL commands since we're in an asynchronous environment. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 554 response on wrong REST </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.2.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;">
 Return a 554 reply may for a command that follows a REST command.  The
reply indicates that the existing file at the Server-FTP cannot be
repositioned as specified in the REST. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> </tbody></table></p><p><br> </p><h1><a name="RFC-2228_-_FTP_Security_Extensions"></a>RFC-2228 - FTP Security Extensions<a href="#RFC-2228_-_FTP_Security_Extensions" class="section_anchor">¶</a></h1><p>Specifies several security extensions to the base FTP protocol defined in <a href="http://www.ietf.org/rfc/rfc959.txt" rel="nofollow">RFC-959</a>.
 New commands: AUTH, ADAT, PROT, PBSZ, CCC, MIC, CONF, and ENC. New
response codes: 232, 234, 235, 334, 335, 336, 431, 533, 534, 535, 536,
537, 631, 632, and 633. </p><ul><li>Issued: October 1997 </li><li>Status: PROPOSED STANDARD </li><li>Updates: <a href="http://www.ietf.org/rfc/rfc959.txt" rel="nofollow">RFC-959</a> </li><li><a href="http://www.ietf.org/rfc/rfc2228.txt" rel="nofollow">Link</a> </li></ul><p></p><p><table><tbody><tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Command</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Implemented</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Milestone</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Description</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Notes</strong> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> AUTH </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Authentication/Security Mechanism. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Implemented as <a href="http://code.google.com/p/pyftpdlib/source/browse/trunk/demo/tls_ftpd.py" rel="nofollow">demo script</a> by following the <a href="http://www.ietf.org/rfc/rfc4217.txt" rel="nofollow">RFC-4217</a> guide line. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> CCC </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Clear Command Channel. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> CONF </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Confidentiality Protected Command. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Somewhat obsoleted by <a href="http://www.ietf.org/rfc/rfc4217.txt" rel="nofollow">RFC-4217</a>. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> EENC </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Privacy Protected Command. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Somewhat obsoleted by <a href="http://www.ietf.org/rfc/rfc4217.txt" rel="nofollow">RFC-4217</a>. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> MIC </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Integrity Protected Command. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Somewhat obsoleted by <a href="http://www.ietf.org/rfc/rfc4217.txt" rel="nofollow">RFC-4217</a>. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> PBSZ </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Protection Buffer Size. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Implemented as <a href="http://code.google.com/p/pyftpdlib/source/browse/trunk/demo/tls_ftpd.py" rel="nofollow">demo script</a> by following the <a href="http://www.ietf.org/rfc/rfc4217.txt" rel="nofollow">RFC-4217</a> guide line as a no-op command. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> PROT </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Data Channel Protection Level. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Implemented as <a href="http://code.google.com/p/pyftpdlib/source/browse/trunk/demo/tls_ftpd.py" rel="nofollow">demo script</a> by following the <a href="http://www.ietf.org/rfc/rfc4217.txt" rel="nofollow">RFC-4217</a> guide line supporting only "P" and "C" protection levels. </td></tr> </tbody></table></p><p><br> </p><h1><a name="RFC-2389_-_Feature_negotiation_mechanism_for_the_File_Transfer_P"></a>RFC-2389 - Feature negotiation mechanism for the File Transfer Protocol<a href="#RFC-2389_-_Feature_negotiation_mechanism_for_the_File_Transfer_P" class="section_anchor">¶</a></h1><p>Introduces the new FEAT and OPTS commands. </p><ul><li>Issued: August 1998 </li><li>Status: PROPOSED STANDARD </li><li><a href="http://www.ietf.org/rfc/rfc2389.txt" rel="nofollow">Link</a> </li></ul><p></p><p><table><tbody><tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Command</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Implemented</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Milestone</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Description</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Notes</strong> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> FEAT </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.3.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> List new supported commands subsequent <a href="http://www.ietf.org/rfc/rfc959.txt" rel="nofollow">RFC-959</a> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> OPTS </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.3.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Set options for certain commands. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> MLST is the only command which could be used with OPTS. </td></tr> </tbody></table></p><p><br> </p><h1><a name="RFC-2428_-_FTP_Extensions_for_IPv6_and_NATs"></a>RFC-2428 - FTP Extensions for IPv6 and NATs<a href="#RFC-2428_-_FTP_Extensions_for_IPv6_and_NATs" class="section_anchor">¶</a></h1><p>Introduces
 the new commands EPRT and EPSV extending FTP to enable its use over
various network protocols, and the new response codes 522 and 229. </p><ul><li>Issued: September 1998 </li><li>Status: PROPOSED STANDARD </li><li><a href="http://www.ietf.org/rfc/rfc2428.txt" rel="nofollow">Link</a> </li></ul><p></p><p><table><tbody><tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Command</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Implemented</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Milestone</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Description</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Notes</strong> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> EPRT </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.4.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Set active data connection over IPv4 or IPv6 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> EPSV </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.4.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Set passive data connection over IPv4 or IPv6 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> </tbody></table></p><p><br> </p><h1><a name="RFC-2577_-_FTP_Security_Considerations"></a>RFC-2577 - FTP Security Considerations<a href="#RFC-2577_-_FTP_Security_Considerations" class="section_anchor">¶</a></h1><p>Provides
 several configuration and implementation suggestions to mitigate some
security concerns, including limiting failed password attempts and
third-party "proxy FTP" transfers, which can be used in "bounce
attacks". </p><ul><li>Issued: May 1999 </li><li>Status: INFORMATIONAL </li><li><a href="http://www.ietf.org/rfc/rfc2577.txt" rel="nofollow">Link</a> </li></ul><p></p><p><table><tbody><tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Feature</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Implemented</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Milestone</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Description</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Notes</strong> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> FTP bounce protection </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.2.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;">
 Reject PORT if IP address specified in it does not match client IP
address. Drop the incoming (PASV) data connection for the same reason. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Configurable. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Restrict PASV/PORT to non privileged ports </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.2.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Reject connections to privileged ports. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Configurable. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Brute force protection (1) </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Disconnect client after a certain number (3 or 5) of wrong authentications. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Configurable. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Brute force protection (2) </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.5.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Impose a 5 second delay before replying to an invalid "PASS" command to diminish the efficiency of a brute force attack.  </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Per-source-IP limit </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.2.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Limit the total number of per-ip control connections to avoid parallel brute-force attack attempts. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Configurable. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Do not reject wrong usernames </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Always return 331 to the USER command to prevent client from determining valid usernames on the server. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Port stealing protection </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.1 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Use random-assigned local ports for data connections.  </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> </tbody></table></p><p><br> </p><h1><a name="RFC-2640_-_Internationalization_of_the_File_Transfer_Protocol"></a>RFC-2640 - Internationalization of the File Transfer Protocol<a href="#RFC-2640_-_Internationalization_of_the_File_Transfer_Protocol" class="section_anchor">¶</a></h1><p>Extends
 the FTP protocol to support multiple character sets, in addition to the
 original 7-bit ASCII. Introduces the new LANG command. </p><ul><li>Issued: July 1999 </li><li>Status: PROPOSED STANDARD </li><li>Updates: <a href="http://www.ietf.org/rfc/rfc959.txt" rel="nofollow">RFC-959</a> </li><li><a href="http://www.ietf.org/rfc/rfc2640.txt" rel="nofollow">Link</a> </li></ul><p></p><p><table><tbody><tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Feature</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Implemented</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Milestone</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Description</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Notes</strong> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> LANG command </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Set current response's language. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Support for UNICODE  </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> For support of global compatibility it is rencommended that clients and servers use UTF-8 encoding when exchanging pathnames. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> </tbody></table></p><p><br> </p><h1><a name="RFC-3659_-_Extensions_to_FTP"></a>RFC-3659 - Extensions to FTP<a href="#RFC-3659_-_Extensions_to_FTP" class="section_anchor">¶</a></h1><p>Four new commands are added: "SIZE", "MDTM", "MLST", and "MLSD".  The existing command "REST" is modified. </p><ul><li>Issued: March 2007 </li><li>Status: PROPOSED STANDARD </li><li>Updates: <a href="http://www.ietf.org/rfc/rfc959.txt" rel="nofollow">RFC-959</a> </li><li><a href="http://www.ietf.org/rfc/rfc3659.txt" rel="nofollow">Link</a> </li></ul><p></p><p><table><tbody><tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Feature</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Implemented</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Milestone</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Description</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Notes</strong> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> MDTM command </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Get file's last modification time </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> MLSD command </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.3.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Get directory list in a standardized form. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> MLST command </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.3.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Get file information in a standardized form. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> SIZE command </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Get file size. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> In case of ASCII TYPE it does not perform the ASCII conversion to avoid DoS conditions (see FAQs for more details). </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> TVSF mechanism </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.1.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;">
 Provide a file system naming conventions modeled loosely upon those of
the Unix file system supporting relative and absolute path names. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Minimum required set of MLST facts </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.3.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> If conceivably possible, support at least the type, perm, size, unique, and modify MLSX command facts. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> GMT should be used for timestamps </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> 0.6.0 </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> All times reported by MDTM, LIST, MLSD and MLST commands must be in GMT times </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Possibility to change time display between GMT and local time provided as <tt>FTPHandler.use_gmt_times</tt> attribute </td></tr> </tbody></table></p><p><br> </p><h1><a name="RFC-4217_-_Securing_FTP_with_TLS"></a>RFC-4217 - Securing FTP with TLS<a href="#RFC-4217_-_Securing_FTP_with_TLS" class="section_anchor">¶</a></h1><p>Provides a description on how to implement TLS as a security mechanism to secure FTP clients and/or servers. </p><ul><li>Issued: October 2005 </li><li>Status: STANDARD </li><li>Updates: <a href="http://www.ietf.org/rfc/rfc959.txt" rel="nofollow">RFC-959</a>, <a href="http://www.ietf.org/rfc/rfc2246.txt" rel="nofollow">RFC-2246</a>, <a href="http://www.ietf.org/rfc/rfc2228.txt" rel="nofollow">RFC-2228</a> </li><li><a href="http://www.ietf.org/rfc/rfc4217.txt" rel="nofollow">Link</a> </li></ul><p><table><tbody><tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Command</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Implemented</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Milestone</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Description</strong> </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> <strong>Notes</strong> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> AUTH </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Authentication/Security Mechanism. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> CCC </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> NO </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Clear Command Channel. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> PBSZ </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Protection Buffer Size. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Implemented as as a no-op as recommended. </td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> PROT </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> YES </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> --- </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Data Channel Protection Level. </td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"> Support only "P" and "C" protection levels. </td></tr> </tbody></table></p>
 </td>
 </tr>
 </tbody></table>
 </div>




<script type="text/javascript" src="rfcs-compliance_files/dit_scripts.js"></script>



 </body></html>
